In a database, a transaction may involve one or more records, tables, files, indexes, and/or other components of a database system. In practice, multiple operations on multiple components are often part of a given transaction, even though the transaction is presented to users as a single unitary (“atomic”) action. If problems are encountered during the transaction, the database may be left in an inconsistent state. For example, the transaction may have been partially but not fully performed on the various components it involves, so that some have been updated but others have not. Such inconsistency can lead to inaccurate data, loss of data, and other problems. A wide variety of approaches have been developed to prevent and detect inconsistencies, and recover a database to a consistent state.